package contable.aplicacion.contabilidad.inventario;

import contable.aplicacion.FactoriaSQL;
import contable.dominio.Cardex;
import contable.dominio.Inventario;
import contable.dominio.Periodo;
import contable.dominio.Registro;

public abstract class Inventarios {

    public static final double IVA = 0.13;
    protected Cardex cdx;
    protected FactoriaSQL fsql = FactoriaSQL.getINSTANCIA();
    protected Periodo periodo = new Periodo();
    protected Registro registro;
    protected Inventario producto;

    /**
     * Registrar los cambios del inventario de <i>Papel fotográfico</i>
     *
     * @param cantidad La cantidad de papel fotográfico
     * @param precio El precio del papel fotográfico
     */
    public abstract void papelFotografico(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Químicos para impresión</i>
     *
     * @param cantidad La cantidad de químicos
     * @param precio El precio de los químicos
     */
    public abstract void tinta(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Empaques</i>
     *
     * @param cantidad La cantidad de empaques
     * @param precio El precio de los empaques
     */
    public abstract void empaque(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Fotografías</i>
     *
     * @param cantidad La cantidad de fotografías
     * @param precio El precio de las fotografías
     */
    public abstract void fotografia(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Cámaras</i>
     *
     * @param cantidad La cantidad de cámaras
     * @param precio El precio de las cámaras
     */
    public abstract void camara(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Memorias USB de 2Gb</i>
     *
     * @param cantidad La cantidad de memorias
     * @param precio El precio de las memorias
     */
    public abstract void memoriaUSB2(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Memorias USB de 4Gb</i>
     *
     * @param cantidad La cantidad de memorias
     * @param precio El precio de las memorias
     */
    public abstract void memoriaUSB4(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Memorias USB de 8Gb</i>
     *
     * @param cantidad La cantidad de memorias
     * @param precio El precio de las memorias
     */
    public abstract void memoriaUSB8(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Memorias USB de 16Gb</i>
     *
     * @param cantidad La cantidad de memorias
     * @param precio El precio de las memorias
     */
    public abstract void memoriaUSB16(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Estuches para cámara</i>
     *
     * @param cantidad La cantidad de cámaras
     * @param precio El precio de las cámaras
     */
    public abstract void estucheCamara(int cantidad, double precio);

    /**
     * Registrar los cambios del inventario de <i>Marco para fotografías</i>
     *
     * @param cantidad La cantidad de marcos
     * @param precio El precio de las marcos
     */
    public abstract void marcoFotografia(int cantidad, double precio);

    /**
     * Calcular el valor del IVA
     *
     * @param valor El valor para el cual se quiere calcular el IVA
     * @return El valor del IVA
     */
    public static double calcularIva(double valor) {
        return (double) Math.round((valor * IVA) * 100) / 100;
    }
}
